package com.papers.system.service;

import com.papers.common.core.domain.PageQuery;
import com.papers.common.core.domain.R;
import com.papers.common.core.page.TableDataInfo;
import com.papers.system.domain.TJuanChapter;
import com.papers.system.domain.bo.TJuanChapterBo;
import com.papers.system.domain.dto.TJuanChapterDto;
import com.papers.system.domain.dto.TJuanChapterSortDto;
import com.papers.system.domain.vo.*;

import java.util.List;

/**
 * 章节Service接口
 *
 * @author papers
 * @date 2022-10-08
 */
public interface ITJuanChapterService {

    /**
     * 查询章节
     */
    TJuanChapterVo queryById(String chapterId);

    /**
     * 查询章节列表
     */
    TableDataInfo<TJuanChapterVo> queryPageList(TJuanChapterDto dto, PageQuery pageQuery);

    /**
     * 查询章节列表
     */
    List<TJuanChapterVo> queryList(TJuanChapterBo bo);

    /**
     * 新增章节
     */
    Boolean insertByBo(TJuanChapterBo bo);

    /**
     * 修改章节
     */
    Boolean updateByBo(TJuanChapterBo bo);

//    /**
//     * 校验并批量删除章节信息
//     */
//    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    /**
     * 查询章节
     *
     * @return
     */
    TJuanChapter getOne(String chapterId);

    /**
     * 查询章节树
     *
     * @return
     */
    List<TJuanLeftTreeVo> getChapterTreeList(String courseId);

    /**
     * 导出用查询专业列表
     */
    List<TJuanChapterPutVo> OutputList(TJuanChapterBo bo);

    /**
     * excel批量导入
     */
    R saveBatch(List<TJuanChapterOutVo> list,String courseId);

    List<TJuanChapterVo> getChapterList(TJuanChapterBo bo);

    List<TJuanCourseTreeVo> getCourseTreeList();

    R<Void> deleteByIds(String[] chapterIds);

    int ChapterCodeUnique(TJuanChapterBo bo);

    R<Void> sort(TJuanChapterSortDto dto);

}
